Skip to content

sync(desktop): propagate finalized transport into top epic - #2035

Merged
integry merged 264 commits into
1950-epic-cross-platform-dskfrom
1953-epic-desktop-transport-api
Sep 4, 2026
Merged

sync(desktop): propagate finalized transport into top epic#2035
integry merged 264 commits into
1950-epic-cross-platform-dskfrom
1953-epic-desktop-transport-api

Conversation

@integry

@integry integry commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Propagate the finalized desktop transport/API epic into the top-level cross-platform desktop epic.

This synchronization PR intentionally targets 1950-epic-cross-platform-dsk, not main. It will remain the integration boundary for the completed remote pairing, credential lifecycle, ProPR Connect transport, and secret-free Connect discovery work. Final top-level acceptance remains in draft PR #1970 and must not be merged to main by this PR.

propr-dev[bot] added 30 commits August 29, 2026 22:26
Implemented F1 only.

- Noncanonical reserved Connect URLs—including explicit `:443` and percent-encoded hosts—now fail before pairing creation.
- Returns bounded `PAIRING_CONFIGURATION_INVALID` / HTTP 503 without reflecting configured input.
- Valid Connect, arbitrary HTTPS remotes, lookalikes, and loopback behavior remain unchanged.
- Added regressions confirming no pairing row is persisted.

Changed [desktopAuthService.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-29T22-14-16/packages/api/desktopAuthService.ts:152) and [desktopAuth.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-29T22-14-16/packages/api/test/desktopAuth.test.ts:101).

Verification passed:

- 67 Connect/client/API tests
- 24 desktop tests
- 96 runtime-config/desktop UX tests
- 10 launcher drift tests
- Affected typechecks and API lint
- CLI release-package guard
- `git diff --check`

The full 321-file suite reached 176 files before hanging because Redis is unavailable at `127.0.0.1:6379`; it was stopped after repeated connection failures. No merge, base sync, commit, or PR creation was performed.

PR: #1988
Comment by: @integry (ID: 5465187212)
Model: gpt-5.6-sol
…Image.test.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T22-27-43/propr-ui/src/components/TaskPlanner/AuthenticatedAttachmentImage.test.tsx:39).

Fixed the TypeScript regression in [AuthenticatedAttachmentImage.test.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T22-27-43/propr-ui/src/components/TaskPlanner/AuthenticatedAttachmentImage.test.tsx:39).

The test now captures the signal in a typed collection, explicitly fails if absent, and verifies it is aborted after scope rotation—without a signal cast or assertion.

Passed:

- `npm run desktop:prepare`
- `npm run typecheck -w propr-ui`
- Focused authenticated attachment test: 2/2 passed
- `git diff --check`

Only the requested test file changed. HEAD remains `66cd848f7e91fd09b3376aed7a371fb2a948d90b`; no merge or base sync performed.

PR: #1977
Comment by: @integry (ID: 5465242965)
Model: gpt-5.6-sol
Implemented all selected blockers F1–F7.

Key results:

- Root access now uses one synchronous, descriptor-anchored, identity-checked snapshot; replacements and unsafe ancestry fail with `INVALID_ROOT`. Windows semantics fail closed when authority cannot be proven.
- CLI/API identity creation is centralized, permission-checked, atomic, durable, concurrency-safe, and interruption-recoverable.
- Discovery v1 parsing is strict and shared between producer and consumer.
- Every rejected/timeout response body is cancelled; invalid, unreachable, and timeout exit classes are separated correctly.
- Tunnel setup again normalizes redundant trailing slashes before strict validation.
- Added packaged CLI, replacement, concurrency, interruption, body-stream, schema, and Unix/Windows-semantics regressions.
- Updated desktop-pairing documentation.
- No commit or PR operations performed.

Verification:

- Focused CLI/API/shared/tunnel/launcher/hosted-UI tests: passed.
- Packaged CLI integration tests: passed.
- Typechecks and lint: passed.
- CLI package guard (`npm run cli:pack`): passed.
- `git diff --check`: passed.
- Full suite: 322/323 runners passed; all 69 UI files and 496 UI tests passed. The sole exception was the pre-existing Redis-backed `llmMetrics.test.ts`, which timed out because Redis and a Docker daemon are unavailable in the agent image.

PR: #1989
Comment by: @integry (ID: 5465164512)
Model: gpt-5.6-sol
…c0e83b082c4c75d8ac8894cd947aeb1`.

Implemented the remaining blockers on exact head `0b7c2961ac0e83b082c4c75d8ac8894cd947aeb1`.

Key changes:

- Strict raw Connect shorthand validation; credentials, ports, encoding, Unicode, paths, whitespace, alternate casing, trailing dots, and lookalikes are rejected before flow persistence.
- Reserved `t-*.propr.dev` attempts can no longer downgrade to generic HTTPS pairing/client behavior.
- Malformed runtime configuration is bounded and redacted. The API client is constructed only after successful validation, otherwise a safe configuration screen renders.
- Desktop logs, IPC errors, DOM messages, and profile presentation avoid raw endpoints and failure details.
- Added managed-tunnel stale/restart recovery with Retry, Re-enter, Rediscover, and explicit confirmation before replacing a profile.
- Added a secret-free optional rediscovery adapter seam.
- Formal F1 API files were not modified.

Validation passed:

- Client/shared pairing: 20 tests
- API desktop-auth/status: 39 tests
- Desktop/Electron: 24 tests
- Full UI: 507 tests across 70 files
- Root, client, UI, and desktop typechecks
- Root and UI lint
- CLI package guard
- `git diff --check`

The repository-wide runner reached 175/321 files, then hung on Redis-dependent tests because neither Redis nor Docker is available. A resumed run encountered the same environment blocker at `llmMetrics.test.ts`. All affected and independently runnable suites pass.

No commit, merge, sync, or PR operation was performed.

PR: #1988
Comment by: @integry (ID: 5465256401)
Model: gpt-5.6-sol
…ithout syncing, merging, or committing.

Implemented the requested exact-head fixes on `1c42418a…` without syncing, merging, or committing.

Key changes:

- Status-only probes with bounded, one-use activation tickets and atomic main-process activation.
- Profile origin updates and credential detachment serialized before best-effort revoke.
- Failure-safe profile removal for corrupt/decrypt/unlink/state-write scenarios.
- SocketProvider now reacts to scope and API-origin changes, with proper desktop null-scope behavior and full Manager teardown.
- Realistic packaged-origin CORS preflight coverage while retaining malformed OPTIONS tests.

Verification passed:

- Desktop, UI, client, and API typechecks
- Desktop suite: 51 tests
- Client suite: 24 tests
- API auth/socket/CORS/attachment suite: 38 tests
- Full configured UI suite: 513 tests
- UI lint: no errors
- Runtime and packaging audits: zero vulnerabilities
- Clean-dependency desktop package guard and production Linux package
- API production build
- `git diff --check`

Unavailable locally:

- Secure packaged smoke: `xvfb-run` is absent.
- Root full suite: 173/322 tests passed before Redis-dependent execution; neither Redis nor Docker is installed in the container.

PR: #1977
Comment by: @integry (ID: 5465267002)
Model: gpt-5.6-sol
…g head without merging, syncing, or committing.

Implemented the remaining A–D blockers on the exact existing head without merging, syncing, or committing.

Key fixes:

- Hermetic explicit-root discovery with robust `--root` parsing and a minimal non-ProPR environment allowlist.
- Docker execution failures now produce `internalFailure`/exit 1; exit 2 is reserved for proven not-ready states.
- No-store headers apply at the earliest `/api` boundary, including limiter and error responses.
- Strict raw Connect selector validation and consistent case normalization across shared, API, UI, CLI, and launcher paths.
- Added packaged hostile-CWD/env CLI tests, Docker failure regressions, real global limiter saturation, and selector parity tests.

Validation passed:

- CLI/API/shared/UI typechecks
- CLI/API/UI lint
- Focused CLI, API, pairing, tunnel, rate-limit, and UI tests
- CLI packaging
- `git diff --check`

The configured full suite passed 322/323 runs. The sole failure was the unrelated Redis-dependent `test/llmMetrics.test.ts`, which timed out while Redis at `127.0.0.1:6379` was unavailable.

PR: #1989
Comment by: @integry (ID: 5465371272)
Model: gpt-5.6-sol
…a03e6ce26429f7d6846286` without merging, syncing, or committing.

Implemented the exact-head follow-up on `38cdf456a090b8e252a03e6ce26429f7d6846286` without merging, syncing, or committing.

Key changes:

- Enforced atomic profile/requested/credential origin equality in [credential-service.ts](/home/node/workspace/apps/desktop/src/credential-service.ts) and [profile-store.ts](/home/node/workspace/apps/desktop/src/profile-store.ts), including stale detachment and delayed activation-race coverage.
- Bound renderer activation to the main-returned `profileId`; mismatches become authentication-required and never publish a scope.
- Restored authorization reconnect and stale deferred SocketProvider regressions.
- Split [DesktopExperience.tsx](/home/node/workspace/propr-ui/src/desktop/DesktopExperience.tsx) to 289 lines and [DesktopExperience.test.tsx](/home/node/workspace/propr-ui/src/desktop/DesktopExperience.test.tsx) to 390 lines, without weakening lint.

Validation passed:

- Focused desktop: 55 tests
- Focused adapter/apiClient/SocketProvider/UI: 58 tests
- Full UI: 517 tests
- UI lint, typecheck, and production build
- Desktop typecheck and Linux production package
- `git diff --check`

The configured full suite completed 167/322 serial files without failures, then blocked indefinitely on file 168 because Redis was unavailable at `127.0.0.1:6379`; neither `redis-server` nor Docker is installed in this environment.

PR: #1977
Comment by: @integry (ID: 5465456632)
Model: gpt-5.6-sol
…g or syncing the transport base.

Implemented the exact-head Connect follow-up without merging or syncing the transport base.

- Enforced byte-for-byte canonical Connect origins across shared, client, API, Electron, hosted UI, CLI, and launcher paths. Reserved nested/lookalike hosts cannot fall through as generic remotes.
- Removed renderer discovery fallback from managed recovery. Trusted rediscovery now requires current-attempt fencing, matching opaque profile ID, strict endpoint validation, and explicit confirmation.
- Added bounded/redacted confirmation copy and deterministic recovery regressions.
- Split the affected UI modules to eliminate all six lint warnings without changing lint configuration.

Verification:

- Connect suites: passed
- UI lint, typecheck, build: passed
- Desktop typecheck and Electron package: passed
- `git diff --check`: passed
- Full suite: 320/321 runs passed; only `test/llmMetrics.test.ts` timed out waiting for Redis at `127.0.0.1:6379`, which is unavailable in this environment.

No commit was created.

PR: #1988
Comment by: @integry (ID: 5465471435)
Model: gpt-5.6-sol
Implemented only F8 and F9.

- F8: successful A→B activation now clears renderer local/session storage before publishing the new scope, including same-origin switches.
- F9: pairing uses proposed profile data without modifying the stored profile. Profile and credential commit transactionally after successful pairing; failures preserve the prior active profile, credential, and connection. Old tokens are revoked only after replacement commit.
- Added regressions for browser-launch failure, cancellation, expiry, polling failure, secure-storage failure, commit/revoke ordering, and same-origin renderer isolation.

Verification passed:

- Desktop full test suite: 61 tests
- Desktop typecheck
- UI Electron adapter tests
- UI typecheck and lint
- `git diff --check`

No commit was created.

PR: #1977
Comment by: @integry (ID: 5465624544)
Model: gpt-5.6-sol
Implemented only F2 and F3.

- Hosted API client creation is now blocked for missing or non-Connect configurations, while OAuth completion remains exempt: [runtimeConfig.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-13-37/propr-ui/src/config/runtimeConfig.ts:350).
- Approval URLs now require canonical raw query names and values, rejecting encoded names/hosts: [desktopPairing.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-13-37/packages/shared/src/desktopPairing.ts:57).
- Added API-client gating and cross-contract encoding regressions.

Verification passed:

- Shared build
- Client tests: 21 passed
- UI tests: 66 passed
- UI typecheck and targeted lint
- `git diff --check`

PR: #1988
Comment by: @integry (ID: 5465683890)
Model: gpt-5.6-sol
…dc54004bb279e1` without merging, syncing, or committing.

Implemented F8/F9 on exact head `f491eb7137cd9ff0b36b1e2c90dc54004bb279e1` without merging, syncing, or committing.

Key changes:

- [profile-store.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-30T00-17-19/apps/desktop/src/profile-store.ts) now uses immutable encrypted credential slots and one atomic versioned state pointer, with fsync ordering, legacy migration, startup recovery, orphan cleanup, and fail-closed validation.
- Added injected durability failures, concurrent replacement, legacy migration, and real SIGKILL child-process recovery tests proving complete A or complete B.
- [electronAdapters.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-30T00-17-19/propr-ui/src/desktop/electronAdapters.ts) now clears renderer storage only after exact-profile, current-attempt activation validation.
- Mismatch, throw, stale activation, failed edits/pairing, and probing clear nothing. Clear failures restore sentinels, discard the main activation, publish no B scope, and return a fixed safe error.
- Added a scoped activation-discard IPC path without removing the credential.

Passed:

- Desktop suite: 64 tests
- UI isolation suites: 62 tests
- UI and desktop typechecks
- UI lint and production build
- Linux desktop package
- `git diff --check`
- Exact-head verification

The configured full suite was attempted and passed all tests reached, but the Redis-dependent portion blocked on `ECONNREFUSED 127.0.0.1:6379`; this environment has neither Redis nor Docker available.

PR: #1977
Comment by: @integry (ID: 5465699420)
Model: gpt-5.6-sol
Implemented only F4, F5, and F6:

- Added the 2048-character guard before parsing `API_PUBLIC_URL` in [desktopAuthService.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-37-29/packages/api/desktopAuthService.ts:156).
- Detects decoded `tunnel` parameter names such as `%74unnel`, blocking stored/configured fallback in [hostedTunnelConfig.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-37-29/propr-ui/src/config/hostedTunnelConfig.ts:42).
- Connect pairing errors now apply only to authentication; help-launch failures retain the bounded help-specific message in [DesktopExperience.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-37-29/propr-ui/src/desktop/DesktopExperience.tsx:221).
- Added focused regressions for all three findings.

Verification passed:

- API pairing suite: 8 tests
- Focused UI suites: 82 tests
- Desktop experience suite: 22 tests
- API and UI typechecks
- API and UI lint
- `git diff --check`

No commit was created.

PR: #1988
Comment by: @integry (ID: 5465785343)
Model: gpt-5.6-sol
…1b65ba6bc09e7e8edbc4c9ef418b12d436980` without merging, syncing, or committing.

Implemented all seven follow-up blockers on exact HEAD `c551b65ba6bc09e7e8edbc4c9ef418b12d436980` without merging, syncing, or committing.

Key outcomes:

- Real fail-closed Windows DACL/reparse-point and macOS ACL authority checks with deterministic fixtures.
- Crash-remnant identity recovery and strictly bounded, revalidated reads.
- Abort-before-listener race closed with exact cleanup.
- Root-specific persisted tunnel overrides restored through read-only config access.
- Noncanonical managed URL spellings rejected across launcher, shared, API, CLI, and hosted UI boundaries.
- Validated Docker transport environment forwarding with redacted failures.
- Clean-checkout unit preparation now builds required workspaces first.

Validation passed:

- Clean `npm ci` and 281 fast unit tests.
- Exact full suite: all 322 non-live files plus UI workspace; 497 UI tests.
- 321 hosted-tunnel tests and focused identity/discovery regressions.
- Node 22 and 24 CLI matrices.
- Desktop audits, clean package build, typecheck, and 24 runtime tests.
- CLI package dry run, API/CLI/UI builds, typechecks, and zero-warning lint.
- Actionlint, release shellcheck, release metadata, and `git diff --check`.

The packaged GUI launch smoke was unavailable because this host lacks Xvfb/root sandbox-helper setup; desktop packaging and runtime coverage passed.

PR: #1989
Comment by: @integry (ID: 5465520611)
Model: gpt-5.6-sol
…out merging, syncing, or committing.

Implemented the remaining discovery authority blockers without merging, syncing, or committing.

Key changes:

- Docker discovery now filters by exact `propr.stack`, rejects duplicate/unknown labeled containers, and retains the 64 KiB cap.
- Docker receives only strictly validated bootstrap, home/context, SSH, and documented Docker variables.
- Windows ACL inspection now reads owner/DACL/reparse metadata from the same native handle; macOS ACL inspection uses the pinned descriptor.
- Identity and `READY` entries receive consistent native authority validation, including recovery and publication paths.
- Persisted tunnel state now uses a bounded, handle-pinned OS-home read with platform-canonical root keys and fixed fail-closed errors.
- Added real Windows/macOS authority CI coverage in [pr-build-check.yml](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T00-57-36/.github/workflows/pr-build-check.yml).
- Exit semantics now match the request: ready/not-ready `0`, internal/config failure `1`, unsupported/incompatible `2`.

Validation completed successfully:

- Clean `npm ci`, release verification, fast-unit and hosted-tunnel validation
- Focused root, identity, discovery, CLI, API, and orchestrator suites
- CLI package, typecheck, and lint
- Desktop audits, package, typecheck, and 24 runtime tests
- UI full suite: 497 tests passed
- `git diff --check`

The aggregate full suite passed 322/324 file runs. One Redis-dependent test timed out because Redis is unavailable locally; the other transient repository-manager failure passed its isolated rerun (9/9). Native Windows/macOS jobs, actionlint, and packaged GUI smoke remain CI-only because this Linux runner lacks those OSes, Docker/actionlint, and `xvfb-run`.

PR: #1989
Comment by: @integry (ID: 5465866322)
Model: gpt-5.6-sol
…30d30c7b9a2ab7024f8932fa2f` without merging, syncing, or committing.

Implemented all four blockers on exact head `8897926a40fe7030d30c7b9a2ab7024f8932fa2f` without merging, syncing, or committing.

- Added credential identity epochs through [profile-store.ts](/home/node/workspace/apps/desktop/src/profile-store.ts), activation IPC, and [electronAdapters.ts](/home/node/workspace/propr-ui/src/desktop/electronAdapters.ts). Real identity replacement clears local/session storage once; reconnecting the same credential retains it.
- Added alternating write-through, self-contained encrypted journals with recovery for pointer rollback, reordered visibility, corrupt/missing slots, and every credential/state boundary.
- Persisted bounded pending revocations atomically with B. Startup and pre-mutation retries retain network/5xx failures, terminally complete 2xx/401/404, and emit only redacted diagnostics.
- Serialized cancellation/profile switching through the publish gate, with deterministic pre-publish race coverage.
- Added native Windows child termination/restart tests plus real-process revocation crash fixtures.

Validation passed:

- Configured Full Suite: all 321 non-live files plus UI workspace passed in 501.7s.
- Desktop tests/typecheck/package.
- UI tests, focused renderer/isolation/SocketProvider tests, typecheck, lint, and build.
- Client, IPC/preload, API client, hosted-tunnel, notification, CLI packaging, release verification, and fast unit suites.
- `git diff --check`.

Environment-only limitations:

- Native Windows tests are included but skipped on this Linux host.
- Playwright Chromium could not start because the container’s 512-PID cgroup was exhausted by 352 unreapable test-runner zombie processes; it failed before loading a page.
- Docker-based actionlint/shellcheck could not run because Docker is unavailable.

PR: #1977
Comment by: @integry (ID: 5465910433)
Model: gpt-5.6-sol
…f…` without merging or syncing the transport base.

Implemented the durability follow-up on exact head `0a2cbd3f…` without merging or syncing the transport base.

Key changes:

- Added prepared → flush → verify → `O_SYNC` commit-marker journal publication. Flush/verification failures now fail before durable callbacks or B publication.
- Encrypted and authenticated self-contained journals with bounded size and lossless string/`BigInt` generations.
- Recovery now authenticates journals before reading or repairing `profiles.json`.
- Added mirror corruption, alternate-slot rollback, missing-slot, injected I/O failure, revocation, cancellation, and crash matrices.
- Added required x64 `windows-latest` durability job in [desktop-release-guard.yml](/home/node/workspace/.github/workflows/desktop-release-guard.yml:26), with explicit scenario-count enforcement and zero permitted skips.

Validation passed:

- Clean `npm ci`
- Desktop tests: 87/87
- Linux native durability command: 67/67, 0 skipped
- Client tests: 24/24
- UI transport tests: 39/39
- Fast validation tests: 279/279
- Desktop/UI typechecks, UI lint/build, root lint/build
- Linux desktop package
- Release metadata and `git diff --check`

Native Windows success is not claimed: the hosted job must execute after push. Local `actionlint` and the Redis-backed configured Full Suite could not run because this environment has no Docker or Redis; both remain covered by CI.

PR: #1977
Comment by: @integry (ID: 5466169482)
Model: gpt-5.6-sol
…90c6e85076b903ae76d3437ea93d3762bdcd`, without merging, syncing, or committing.

Implemented all five authority blockers on exact HEAD `56e890c6e85076b903ae76d3437ea93d3762bdcd`, without merging, syncing, or committing.

Key changes:

- Shipped integrity-pinned macOS same-fd ACL brokers using `acl_get_fd_np`, `acl_to_text`, and `fstat`.
- Replaced per-entry Windows PowerShell with one native x64 broker that pins the complete batch and returns full lossless identities plus owner/DACL/ACE data.
- Closed trusted-config ENOENT laundering across home, `.propr`, and `config.json` barriers.
- Converted public identities to canonical decimal strings/BigInt-safe comparisons, including adjacent `>2^53` collision tests.
- Corrected macOS ACL fixtures and added native publication, READY hardlink, recovery, inherited ACL, swap, reparse, owner, and DACL assertions.
- Added real `macos-15`/`windows-2025` native CI coverage and packaged-broker guards.

Validation passed:

- Clean `npm ci`
- CLI typecheck, lint, build, matrices, packaging, and release verification
- Unit and focused authority/config/identity/discovery/orchestrator suites
- Full suite: all 323 non-live runs plus 497/497 UI tests
- Desktop audits, package, typecheck, and runtime tests
- `actionlint`
- `git diff --check`

The Electron launch smoke cannot run locally because this container lacks `xvfb-run` and setuid-sandbox privileges. Actual macOS/Windows executions are configured in CI but require the system-generated commit before those hosted jobs can run.

PR: #1989
Comment by: @integry (ID: 5466090880)
Model: gpt-5.6-sol
…cing the transport base.

Implemented the exact-head durability follow-up without syncing the transport base.

Key changes:

- Replaced read-only fsync handles with minimum-access `O_WRONLY` handles plus `FileHandle.sync()`, matching Node 22’s documented flush API. [Node.js filesystem documentation](https://nodejs.org/docs/latest-v22.x/api/fs.html)
- Reworked journals to durable `P` → close → independent reopen/authenticate/exact-verify → `C` → writable flush. Recovery never selects `P`, and `C` is never rolled back.
- Preserved verified B without revoking it if C becomes observable but its final flush reports failure.
- Enforced journal-first mirror repair with fixed redacted errors for real I/O failures.
- Added strict CI accounting for all 68 tests and barrier, transaction, visibility, mirror, revocation, and cancellation categories.
- Expanded Windows CI to run native durability, desktop tests/typecheck, and x64 packaging; added Linux transaction parity.

Verification passed:

- Clean `npm ci`
- Linux durability parity: 68/68 passed, 0 skipped
- Desktop tests: 87/87
- Fast unit tests: 279/279
- Desktop and renderer typecheck
- Linux x64 desktop package
- Release metadata validation
- `git diff --check`

Windows-native proof, actionlint, and the Redis-backed Full Suite remain for CI; this host is Linux and lacks Docker/Redis, so I am not claiming native Windows completion.

PR: #1977
Comment by: @integry (ID: 5466293129)
Model: gpt-5.6-sol
…1e8e7423238106e3b8afc3` without syncing, merging, or committing.

Implemented the follow-up on exact HEAD `f0a1fdf90334a00b091e8e7423238106e3b8afc3` without syncing, merging, or committing.

Key changes:

- Correct Darwin `NULL/ENOENT` no-ACL handling while preserving fatal inspection errors.
- Windows inspection now inherits pinned handles; no authority pathname reopening or `nodeFileId` shortcut.
- Added strict index/type binding and lossless double-read `FILE_ID_128`/volume verification.
- Hardened helper execution through digest-verified randomized private capabilities.
- Fixed PowerShell junction fixtures and expanded native ACL, swap, identity, READY, recovery, config-absence, and helper-replacement coverage.
- Rebuilt all three native brokers and updated package hashes.
- Native CI now runs focused suites and reports `expected=6 executed=6 skipped=0`.

Local validation passed:

- Clean `npm ci`
- Focused Connect suite: 90/90
- Identity/authority suite: 23/23
- Fast and hosted regressions: 321/321
- UI regressions: 67/67
- CLI Node 22/24 matrices: 12/12 each
- CLI package guard, typecheck, and lint
- Desktop audits, packaging, typecheck, and runtime tests: 24/24
- `actionlint`
- `git diff --check`

Native macOS/Windows proof remains pending CI execution. The Redis-backed Full Suite could not run because this environment has neither Docker nor Redis; packaged desktop launch was similarly blocked by missing `xvfb-run`. I am not claiming those gates passed.

PR: #1989
Comment by: @integry (ID: 5466347852)
Model: gpt-5.6-sol
…ching the transport base.

Implemented the two exact-head durability fixes without touching the transport base.

- Recovery now accepts only an authenticated generation-1 canonical empty prepared bootstrap, reconstructs empty A, and retries publication. Other prepared records remain non-authoritative.
- Prepared verification, `C` publication, flush, re-authentication, and close remain bound to one writable handle. Native identity/metadata checks reject pathname replacement before commit.
- Added real child-kill coverage across bootstrap, v1 migration, and v2 migration boundaries, plus same-size attacker swaps and path-restoration ABA.
- Native accounting now enforces 70 top-level tests: the original 68 plus two new categories.

Verification passed:

- Linux native durability: 70/70, zero skips
- Transaction boundaries: 18/18
- Bootstrap/migration: 39/39 Linux; Windows expects 36/36 supported boundaries
- Verified-handle swaps: 2/2
- Final Full Suite: 322/322 entries
- Electron adapters: 9/9; IPC: 3/3
- Clean `npm ci`, Validate Changes sequence, desktop typecheck/package
- `actionlint` and `git diff --check` ([official actionlint release](https://github.com/rhysd/actionlint/releases))
- Full Suite used checksum-verified local Redis because Docker is unavailable ([official Redis hashes](https://github.com/redis/redis-hashes))

Windows-native execution cannot run on this Linux host; the existing required `windows-latest` x64 job now enforces the expanded zero-skip counts. No commit was created.

PR: #1977
Comment by: @integry (ID: 5466441009)
Model: gpt-5.6-sol
…ging, or syncing.

Implemented the requested follow-up without committing, merging, or syncing.

Key changes:

- Native workflow now uses platform-safe focused suites and requires exact TAP results: 6 passed, 0 failed, 0 skipped, plus all 29 macOS or 34 Windows named counters.
- Windows commands use explicit Bash workflow steps, avoiding PowerShell continuation/path parsing.
- Windows fixtures moved from the shared `D:\a\_temp` ancestry into the authenticated OS home ancestry.
- Added fixed redacted entry-index/policy diagnostics and reason-specific denial assertions.
- Reworked Windows bootstrap so System32 PowerShell locks, hashes, identity-binds, protects, and verifies the staged broker before execution, retaining locks through process exit.
- Added pre-lock, post-lock, launch-time, and ABA replacement proofs; junction/swap barriers and intended reason codes are asserted.
- Rebuilt and pinned the Windows broker with full held-handle inspection and double-read `FILE_ID_128`.

Local validation passed:

- Clean `npm ci`
- CLI typecheck/build/lint/package verification
- Release verification
- 281 unit tests
- 321 hosted-tunnel tests and 67 UI tests
- 65 platform-safe workflow tests
- 25 identity/CLI integration tests
- Desktop package, typecheck, 24 tests, and both audits
- actionlint and `git diff --check`

Completion remains pending the actual committed macOS and Windows hosted jobs. This Linux runner has neither platform and lacks Docker/Redis and `xvfb-run`, so the configured full suite, native proofs, and desktop smoke launch could not be truthfully completed here. The workflow now fails closed unless those native jobs report every required counter with zero failures and skips.

PR: #1989
Comment by: @integry (ID: 5466465885)
Model: gpt-5.6-sol
…ing.

Implemented the requested follow-up changes without committing.

Key changes:

- Added a cached, authenticated Windows broker capability with locked staged image, path-free inherited-handle batches, strict 4 KiB versioned stdin protocol, request IDs, 64-entry cap, 5-second batch deadline, serialized access, fail-closed restart, and lifecycle cleanup.
- Rebuilt and SHA-256-pinned the Windows native broker.
- Added Windows concurrency, replacement, crash, protocol-error, restart, and cleanup evidence.
- Added strict Windows focused-suite verification for exactly 65/65.
- Repaired macOS READY baseline/ACL evidence and fixed public error-contract assertions for swap scenarios.
- Preserved full FILE_ID_128, BigInt identities, same-handle ACL inspection, strict ENOENT, Docker filtering, and bounded schemas.

Validation passed:

- Focused Connect suite: 65/65, 0 failures/skips
- Full Suite: 323 non-live files plus UI suite, all passed in 462.4s
- Unit suite: 281 passed
- CLI typecheck, lint, build, package guard, and release verification
- Actionlint and `git diff --check`
- Clean `npm ci`
- Windows broker cross-build with Zig 0.13.0 and digest verification

I cannot truthfully claim final native completion from this Linux workspace: the real Windows 34/34 and macOS 29/29, 6/6 native jobs still need to execute on their respective CI runners. The local native suite correctly skipped all six platform-only tests and is not being presented as native evidence.

PR: #1989
Comment by: @integry (ID: 5466648007)
Model: gpt-5.6-sol
…ming full completion because actual Windows/macOS native runners were unavailable.

Implemented the Windows follow-up changes, but I’m not claiming full completion because actual Windows/macOS native runners were unavailable.

Key changes:

- Strict `batch-v1` routing for exactly 1–64 inherited handles; malformed command, arity, count, and descriptor combinations fail closed.
- Replaced readiness/stop files with authenticated, bounded named-pipe IPC using fresh nonces, HMAC binding, full identity, and supervisor sequence checks.
- Added pre/post broker challenges while the supervisor continuously retains its no-write/no-delete image handle.
- Added authenticated shutdown, timeout/output bounds, process reaping, crash recovery, serialization, and protocol-desync invalidation.
- Expanded Windows evidence for real denied write/delete/rename/replacement attempts, ABA replacement/restoration, spoofed responses, unauthenticated stop, supervisor crashes, and queued restart callers.
- Preserved 34 Windows and 29 macOS verifier counter contracts.

Primary changes are in [connectRootAuthority.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T05-15-59/packages/cli/src/connectRootAuthority.ts) and [nativeConnectAuthority.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T05-15-59/test/nativeConnectAuthority.test.ts).

Local validation passed:

- Clean `npm ci`
- Platform-focused suite: 65/65
- Authority/config/identity/discovery/CLI/orchestrator: 123/123
- Unit tests: 281/281
- Hosted tunnel regression: 321/321
- UI tests: 67/67
- CLI Node 22 and Node 24 matrices
- CLI build, lint, typecheck, packaging, release verification
- Desktop typecheck, 24/24 tests, package guard
- `git diff --check`

Remaining required hosted proof:

- Windows 2025: focused 65/65 and native 6/6 with 34/34 counters
- macOS: focused 65/65 and native 6/6 with 29/29 counters
- Actionlint and configured Full Suite could not run because Docker/Redis are unavailable here.

No commit or PR operation was performed.

PR: #1989
Comment by: @integry (ID: 5466873067)
Model: gpt-5.6-sol
…g or syncing transport.

Implemented the Windows supervisor follow-up without merging or syncing transport.

Key changes:

- Replaced nonce/HMAC named-pipe control with inherited anonymous stdin/stdout and strict length-prefixed frames.
- Removed capability secrets, paths, and hashes from supervisor argv/environment.
- Added request-ID, sequence, PID, full identity, and digest response binding.
- Added bounded stage diagnostics, framing/output caps, Job Object containment, process-DACL hardening, and prompt duplicate-handle closure.
- Preserved strict batch-v1 inherited-fd routing and held image locking.
- Expanded Windows adversarial coverage for leakage, replay, wrong ID/identity, malformed/extra/partial frames, EOF, crashes, restart, and ABA replacement.
- Updated [connectRootAuthority.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T06-00-23/packages/cli/src/connectRootAuthority.ts:292), [nativeConnectAuthority.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T06-00-23/test/nativeConnectAuthority.test.ts:594), and native documentation.

Validated locally:

- Clean `npm ci`: success, zero vulnerabilities
- Focused Connect: 65/65, 2.8s
- Authority/config/identity/discovery set: 112/112
- Fast unit tests: passed
- CLI build, typecheck, lint: passed
- CLI package verification: passed
- CLI init matrix: 12/12
- `git diff --check`: passed

Native Windows 65/65 and 6/6 with 34 counters, macOS native proof, configured Full Suite, desktop package guard, and actionlint still require their respective CI runners; actionlint was unavailable locally. No commit was created.

PR: #1989
Comment by: @integry (ID: 5467040972)
Model: gpt-5.6-sol
…10d9d9aadb36a1e452d527cbb06a7016ec84`.

Implemented the three broad-audit fixes on exact head `339110d9d9aadb36a1e452d527cbb06a7016ec84`.

- All credential detachments now atomically move encrypted material and generation-bound metadata into bounded durable revocation records.
- Revocation cleanup requires exact endpoint-bound terminal responses; malformed, redirected, generic 401/404, network, timeout, and 5xx responses retain retry material.
- One shared canonical origin validator now covers client, renderer, Electron, store, Connect, REST, Socket.IO, CORS, and session handling.
- Added detach/revocation crash recovery, transient pairing, same-ID replacement, strict response-contract, and origin parity coverage.

Validation:

- Clean `npm ci`: passed, zero vulnerabilities.
- Native durability matrix: **91/91**, zero skips.
- Configured Full Suite: 321 test files plus UI workspace passed; UI **525/525**.
- Final focused desktop/API/UI tests passed.
- Typechecks, lint, API/UI builds, desktop package, browser smoke, notification suites, actionlint, and `git diff --check`: passed.
- Actual Windows execution remains for the configured Windows CI runner; the native runner now expects 91/91 there.

No commit, merge, PR, or transport sync was performed.

PR: #1977
Comment by: @integry (ID: 5466946794)
Model: gpt-5.6-sol
… merging, syncing, or committing.

Implemented the Windows anonymous-channel follow-up without merging, syncing, or committing.

Key changes:

- Replaced private pipe-FD and synchronous pipe I/O with documented asynchronous `ChildProcess` streams.
- Added bounded incremental framing, backpressure, deadlines, abort handling, serialized requests, and deterministic capability invalidation/restart.
- Propagated explicit async authority checks through setup, configuration, identity publication, CLI, API, and orchestrator call sites.
- Removed the remaining test-only environment-secret/filesystem-sentinel bootstrap path.
- Added exhaustive stage diagnostics and Windows concurrency, cancellation, crash/restart, framing, stale-ID, and responsiveness coverage.
- Ensured Windows DACL protection completes before atomic file publication.

Local validation passed:

- Clean `npm ci`
- Platform-focused Connect: 65/65
- Fast unit tests: 281/281
- Targeted authority/config/identity/CLI/orchestrator suite: 96 passed; six native tests skipped on Linux
- Hosted tunnel regression: 321/321
- UI compatibility: 67/67
- CLI Node 22 matrix subset: 76 passed, one Darwin-only skip
- Root typecheck, CLI/API builds and lint
- Release metadata and CLI package verification
- Desktop package, typecheck, and 24/24 runtime tests
- `git diff --check`

Completion is intentionally not claimed: this Linux worker cannot execute the required hosted Windows 65/65 plus native 6/6 with 34 counters, or macOS 6/6 with 29 counters. The full suite also reached its Redis-dependent section but could not continue because Redis/Docker are unavailable; actionlint and packaged desktop smoke were unavailable for the same environment/tooling reason.

PR: #1989
Comment by: @integry (ID: 5467171064)
Model: gpt-5.6-sol
…d1bb578a16f19510a048d57cd1a56` without committing, merging, or syncing transport.

Implemented the follow-up changes on base head `b3f331bb21dd1bb578a16f19510a048d57cd1a56` without committing, merging, or syncing transport.

Key changes:

- Added tracked, generation-deduplicated revocation retry lifecycle with `awaitIdle()`/`dispose()`.
- Disposal prevents new work, aborts network/body waits, and drains ProfileStore operations.
- Integrated credential disposal into app shutdown and all credential-service test teardown.
- Replaced unbounded terminal-body parsing with fatal UTF-8 streaming capped at 2048 bytes and fixed header/body/record/aggregate deadlines.
- Added bounded startup with fixed degraded/retry status and later recovery.
- Added 12 lifecycle, streaming-body, cancellation, journal-barrier, and startup-budget scenarios.
- Expanded the native durability guard from 91 to 103 tests.

Validation passed:

- Clean `npm ci`: 0 vulnerabilities.
- Full Suite: all 321 non-live files plus native workspace suite passed in 598.3s.
- Native durability: 103/103, zero skips.
- Desktop runtime: 123/123.
- Credential suite: 67/67; same-profile reprobe repeated 10 additional times.
- Renderer isolation: 47/47.
- API/socket tests: 49/49.
- Desktop/UI typechecks and UI build.
- Linux x64 desktop packaging.
- Runtime and packaging audits: 0 vulnerabilities.
- Checksum-verified actionlint: passed.
- `git diff --check`: passed.

Actual Windows-native execution cannot run on this Linux host. The required `windows-latest` workflow is configured to run the expanded 103-test matrix after the system commits these changes; review/merge should remain blocked until that exact-head CI job is green.

PR: #1977
Comment by: @integry (ID: 5467269590)
Model: gpt-5.6-sol
…ompletion until hosted native CI runs.

Implemented the requested follow-up, but I’m not claiming completion until hosted native CI runs.

Key changes:

- Fixed the Windows launch boundary: the previous 39,056-character encoded supervisor exceeded Windows’ 32,767-character command-line limit. A small bounded loader now receives the exact supervisor source through documented async stdin streams.
- Added the hosted Windows smoke before the focused suite, with fixed `[win-authority-stage:<ENUM>:<INDEX>]` diagnostics only: [verify-windows-authority-smoke.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T07-26-10/scripts/verify-windows-authority-smoke.mjs:1), [workflow](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T07-26-10/.github/workflows/pr-build-check.yml:185).
- Added exact production-site staging, including split PATH_NAME/REPARSE/IMAGE_HASH/IMAGE_IDENTITY revalidation and real async failure injection: [connectRootAuthority.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T07-26-10/packages/cli/src/connectRootAuthority.ts:594).
- Added strict graceful smoke shutdown verification.
- Fixed the macOS awaited identity error boundary: [nativeConnectAuthority.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T07-26-10/test/nativeConnectAuthority.test.ts:422).
- Corrected Windows USERPROFILE/HOMEDRIVE/HOMEPATH versus Unix HOME handling: [orchestrator/index.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T07-26-10/packages/cli/src/orchestrator/index.ts:215).

Local validation passed:

- Focused Connect: 65/65
- Fast unit: 281/281
- Tunnel regressions: 321 assertions; UI 67/67
- CLI matrices: 26/26 and 12/12
- Desktop: typecheck, 24/24 tests, package guard
- Clean `npm ci`, release verification, CLI pack, CLI typecheck/build/lint
- `git diff --check`

Still requiring hosted verification:

- Windows smoke PASS and native 6/6 with all 34 counters
- macOS native 6/6 and 29/29
- Configured full suite and actionlint; this worker has neither Redis/Docker nor actionlint, so the full suite was stopped at its Redis-dependent section rather than misreported as passing.

PR: #1989
Comment by: @integry (ID: 5467379909)
Model: gpt-5.6-sol
…changing transport.

Implemented the Windows startup fix, without committing or changing transport.

Key changes:

- Secure 256-bit-random compiler workspace under trusted `SystemRoot\Temp`.
- Restrictive, non-inherited DACL application and verification before `Add-Type`.
- Cleanup before job creation plus guarded error cleanup.
- Removed `EncodedCommand`; retained a bounded constant `-Command` loader and framed stdin source.
- Replaced `SCRIPT_LOAD` with distinct fixed startup stages and real stage injections.
- Updated smoke/native stage contracts and platform documentation.

Local validation passed:

- Clean `npm ci`
- Focused Connect: 65/65
- Identity/CLI integration: 25/25
- Unit suite: 281/281
- CLI typecheck, build, lint, packaging
- Release verification and CLI init: 12/12
- `git diff --check`

Completion is not claimed: exact-head hosted Windows smoke/native and macOS native jobs require the system’s commit and subsequent CI run. Actionlint, desktop guard, and configured Full Suite were also unavailable locally because Docker/native runners are absent.

PR: #1989
Comment by: @integry (ID: 5467530535)
Model: gpt-5.6-sol
…eaa4835f` without merging, syncing, or committing.

Implemented on exact HEAD `6fc8e8fe244c6e3c5fd71f9257c162b9eaa4835f` without merging, syncing, or committing.

Key changes:

- Added persistent two-phase pairing with expiring provisional credentials, exact binding, one-time activation tickets, idempotent activation receipts, cancellation, cleanup, and migration rollback.
- Provisional credentials are rejected by REST and Socket.IO authentication.
- Desktop now durably journals encrypted rollback/revocation material before server activation and publishes renderer scope only after activation and local commit.
- Added a closeable operation gate covering credential/profile work and descendants.
- IPC and session handlers fail closed before shutdown draining; late invokes return `DESKTOP_CLOSING`.
- Expanded native durability coverage with provisional, delivery, and disposal categories.

Validation:

- Two-phase server tests: 16/16
- Native durability: 104/104, zero skips
- Fast unit tests: 279/279
- Migration and IPC lifecycle tests: passed
- Client, API, desktop, REST/Socket.IO, UI typecheck/build, desktop package, release verification, and CLI package: passed
- Clean `npm ci`: passed
- `git diff --check`: passed
- Full suite: 323/324 runs; only `llmMetrics.test.ts` exceeded its existing 180-second timeout
- Windows-native execution and actionlint could not run locally because this Linux environment has neither Docker nor an actionlint binary. No workflow files were modified.

PR: #1977
Comment by: @integry (ID: 5467503249)
Model: gpt-5.6-sol
propr-dev[bot] and others added 2 commits September 4, 2026 18:02
…-platform.test.mjs](/tmp/git-processor/worktrees/integry/propr/pr-2110-followup-2026-09-04T18-00-19/apps/desktop/scripts/packaged-connect-platform.test.mjs:117).

Updated the stale structural assertion in [packaged-connect-platform.test.mjs](/tmp/git-processor/worktrees/integry/propr/pr-2110-followup-2026-09-04T18-00-19/apps/desktop/scripts/packaged-connect-platform.test.mjs:117).

It now strictly verifies:

`pair` completes → successful journey-fixture block begins → terminal request snapshot is captured → `reprobe` runs.

No runtime or Windows changes were made. Darwin ARM64 behavior remains untouched for fresh CI classification.

Validation: 41 tests passed across the platform and lifecycle suites; `git diff --check` passed. No visual preview was needed for this test-only change.

PR: #2110
Comment by: @integry (ID: 5544503194)
Model: gpt-5.6-sol
…ed-connect--20260904-1655-c39

[2109 by GPT-5.6 Sol] Desktop packaged Connect: stabilize macOS browser approval readiness
propr-dev[bot] and others added 6 commits September 4, 2026 18:25
…cOS ARM64 re

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
… missing-rat

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…ed-command s

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…ed-connect--20260904-1814-df5

[2111 by GPT-5.6 Sol] Desktop packaged Connect: stabilize macOS ARM64 reprobe renderer readiness
…ql-resolve--20260904-1822-ynw

[2112 by GPT-5.6 Sol] Transport CodeQL: resolve test-fixture missing-rate-limiting finding
…ql-resolve--20260904-1822-sak

[2113 by GPT-5.6 Sol] Transport CodeQL: resolve Darwin bounded-command shell-injection finding
@integry integry added the AI label Sep 4, 2026
@integry

integry commented Sep 4, 2026

Copy link
Copy Markdown
Owner Author

/ultrafix goal=9 max=3

@propr-dev propr-dev Bot added the ultrafix label Sep 4, 2026
@propr-dev

propr-dev Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

🔄 Ultrafix loop started (goal: 9/10, max cycles: 3)

First action: /review

💡 Tip: Remove the ultrafix label from this PR to stop further ultrafix cycles.

@integry

integry commented Sep 4, 2026

Copy link
Copy Markdown
Owner Author

/review

@propr-dev

propr-dev Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

AI Code Review Complete requested by @integry

Posted 1 review:

View Task Details

@propr-dev

propr-dev Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

🔍 AI Code Review — codex:gpt-5.6-sol

Overall Evaluation

This partial review covers a substantial synchronization of desktop discovery, pairing, credential lifecycle, transport scoping, and packaged acceptance behavior. The PR is not ready to merge: it introduces a renderer CSP regression, and nine authoritative current-head checks remain unsuccessful, concentrated around Windows durability, discovery, and packaging.

Pairing navigation is strongly boundpackages/shared/src/desktopPairing.ts validates the approval origin, route, pairing ID, tunnel hostname, and exact query shape, while apps/desktop/src/pairing-browser.ts revalidates the URL at the final external-navigation sink.

Socket credentials remain freshpackages/client/src/socket.ts obtains the bearer token for each handshake while preserving non-token transport metadata and preventing configured metadata from overriding the credential provider.

Merge blockers

Every finding below was introduced by this PR and must be resolved before merging.

F1: 🔴 Cleartext CSP permits arbitrary hosts

  • Required behavior: The changed desktop transport must preserve the renderer security boundary: plain HTTP and WebSocket connections may be permitted for validated loopback endpoints, but not arbitrary remote or LAN hosts.
  • Evidence: apps/desktop/renderer.html:7 — connect-src was broadened from explicit loopback HTTP/WS sources to the unrestricted scheme sources http: and ws:, even though normalizeApiBaseUrl rejects non-loopback cleartext API endpoints.
  • Minimum fix: Remove the scheme-wide http: and ws: sources and permit only the normalized loopback origins needed by desktop profiles. At minimum, restore the previous loopback allowlist; support additional loopback spellings through narrowly scoped entries or a validated per-profile CSP rather than unrestricted schemes.

Suggestions

These are optional follow-ups and are not sent to /fix.

S1: 🟢 Add CSP policy coverage

Add a focused test asserting that packaged renderer policy permits the supported loopback HTTP/WS forms while rejecting non-loopback cleartext destinations. This is optional test hardening beyond the required CSP correction, but it would protect this security boundary from another accidental broadening.

Score

The implementation contains several carefully designed security and lifecycle mechanisms, but the CSP regression is a merge blocker, and the unresolved Windows durability, discovery, and packaging failures leave major acceptance paths unverified.

Score: 5/10


🤖 Review Details

  • Model: GPT-5.6 Sol
  • Time: 2m 40s
  • Tokens: 84,909 (76,652 in / 8,257 out)
  • Cost: $0.63
  • Review scope: Partial — PR diff files or ranges were unavailable from GitHub or omitted by the configured review context limit.

View Task

Files omitted from review diff

96 files were omitted because patch content was unavailable from GitHub or did not fit the review context budget. Large, binary, generated, and lockfile changes are deprioritized.

  • apps/desktop/src/logger.ts

  • packages/client/test/pairingContentEncoding.test.ts

  • propr-ui/src/config/hostedTunnelConfig.ts

  • propr-ui/src/desktop/packagedTransportSmoke.ts

  • propr-ui/src/api/demoMode.test.ts

  • apps/desktop/scripts/sign-darwin-packaged-connect.mjs

  • apps/desktop/src/credential-service.pairing-browser.test.ts

  • .github/workflows/pr-build-check.yml

  • propr-ui/src/desktop/DesktopExperience.discovery.test.tsx

  • apps/desktop/src/security.test.ts

  • packages/shared/src/connectDiscovery.ts

  • apps/desktop/scripts/windows-fixture-acl.mjs

  • packages/cli/src/orchestrator/index.ts

  • packages/cli/src/agentSkill.test.ts

  • propr-ui/src/desktop/electronAdapters.ts

  • apps/desktop/src/connect-discovery.ts

  • propr-ui/src/api/apiClient.ts

  • test/fixtures/windowsConnectProcessMock.mjs

  • apps/desktop/scripts/run-packaged-darwin-connect-smoke.sh

  • propr-ui/src/desktop.tsx

  • apps/desktop/scripts/verify-darwin-packaged-connect-signature.mjs

  • packages/shared/src/proprServiceUrls.ts

  • apps/desktop/src/ipc.ts

  • propr-ui/src/contexts/SocketProvider.test.tsx

  • apps/desktop/src/connect-discovery.test.ts

  • propr-ui/src/desktop/DesktopExperience.recovery.test.tsx

  • propr-ui/src/desktop/DesktopExperiencePanels.tsx

  • docker/launcher/orchestrator.mjs

  • apps/desktop/src/session-security.ts

  • apps/desktop/scripts/run-bounded-darwin-command.test.mjs

  • packages/cli/src/utils/directoryDescriptor.ts

  • apps/desktop/scripts/run-bounded-darwin-command.mjs

  • apps/desktop/src/packaged-approval-session.ts

  • propr-ui/src/config/runtimeConfig.test.ts

  • apps/desktop/scripts/windows-fixture-acl.test.mjs

  • propr-ui/src/desktop/DesktopExperience.transport.test.tsx

  • apps/desktop/src/session-security.test.ts

  • packages/client/src/pairingProtocol.ts

  • propr-ui/src/desktop/DesktopExperience.management.test.tsx

  • packages/client/src/desktopPairing.ts

  • packages/cli/src/commands/connectCommand.test.ts

  • apps/desktop/scripts/windows-packaged-connect-staging.mjs

  • apps/desktop/scripts/packaged-connect-platform.test.mjs

  • packages/cli/src/commands/connectCommand.ts

  • apps/desktop/src/packaged-approval-session.test.ts

  • packages/client/src/client.ts

  • apps/desktop/scripts/verify-darwin-packaged-connect-signature.test.mjs

  • propr-ui/src/desktop/electronAdapters.test.ts

  • apps/desktop/src/ipc-lifecycle.test.ts

  • propr-ui/src/config/runtimeConfig.ts

  • ...and 46 more


💡 Next step: Comment /fix to address F# merge blockers only.
F# IDs increment across review comments and remain permanent, so selectors such as /fix F3 F5 stay unambiguous across cycles. Suggestions require a separate ordinary follow-up request.

🤖 Review by ProPR

propr-dev[bot] and others added 7 commits September 4, 2026 19:32
…xt transport

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
Implemented F1 only.

- Seeds packaged renderer policy from the persisted active profile before initial window load.
- Reconciles and reloads policy after profile save/edit, set-active, removal, clearing, and activation.
- Added focused startup and transition coverage.

Validation:

- Desktop tests: 480 passed, 25 skipped, 0 failed.
- Desktop typecheck passed.
- Linux x64 packaging and artifact inspection passed.
- `git diff --check` passed.
- No visual preview created; this is not user-visible.
- Changes were not committed, as requested.

PR: #2120
Comment by: @integry (ID: 5545646008)
Model: gpt-5.6-sol
Implemented F2 and F3, scoped to the selected findings.

- Successful explicit and rollback discards now reconcile the persisted active profile, removing stale loopback HTTP/WS CSP sources.
- Activation reconciles current state after cookie clearing, preventing older activations from overwriting newer mutations.
- Policy callbacks are origin-only; delayed reloads resolve the current main renderer and discard superseded generations.
- Pinned packaged smoke policies no longer install dynamic reconciliation or trigger extra `listProfiles()` reads.
- Added focused concurrency, discard, rollback, renderer-replacement, and smoke-policy coverage.

Validation:

- Focused lifecycle/security tests: 42 passed.
- Packaged Connect lifecycle/platform tests: 70 passed.
- Desktop TypeScript check passed.
- Linux-x64 package and artifact inspection passed.
- Native Packaged Connect journey attempt was blocked by this container lacking Xvfb/keyring support and root-owned Chrome sandbox setup. Darwin and arm64 targets require their target-native CI runners.
- No visual preview generated; this change is not visually perceptible.

PR: #2120
Comment by: @integry (ID: 5545794678)
Model: gpt-5.6-sol
Implemented the remaining CSP lifecycle fixes:

- Smoke policy pinning now derives from transport smoke, Connect journey endpoint, or an authorized packaged smoke profile origin.
- Successful `authenticationPair` calls now await pairing and reconcile authoritative active-profile state.
- Added changed-origin active re-pair coverage expecting `null`.
- Corrected the origin-changing profile-save test to reconcile `null`.
- Preserved F2/F3 concurrency and current-renderer behavior.

Changed files: [main.ts](/tmp/git-processor/worktrees/integry/propr/pr-2120-followup-2026-09-04T20-10-36/apps/desktop/src/main.ts:1169), [ipc.ts](/tmp/git-processor/worktrees/integry/propr/pr-2120-followup-2026-09-04T20-10-36/apps/desktop/src/ipc.ts:168), [ipc-lifecycle.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2120-followup-2026-09-04T20-10-36/apps/desktop/src/ipc-lifecycle.test.ts:25), and [smoke-test-authorization.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2120-followup-2026-09-04T20-10-36/apps/desktop/src/smoke-test-authorization.test.ts:172).

Validation:

- Focused lifecycle tests: 23 passed.
- Desktop typecheck: passed.
- Full desktop suite: 485 passed, 25 platform-specific skipped.
- Linux x64 package and packaged artifact/fuse inspection: passed.
- `git diff --check`: passed.

The four target-native Darwin/Linux journeys could not be run on this Linux x64 runner: Darwin x64/arm64 and Linux arm64 require their native CI runners, while the local Linux journey also lacks Xvfb and gnome-keyring. No preview was created because the changes are not visually perceptible.

PR: #2120
Comment by: @integry (ID: 5545905906)
Model: gpt-5.6-sol
Implemented F4 only.

- Reconciliation now publishes `null` when the authoritative profile read fails, clearing stale cleartext CSP origins before rethrowing.
- Added a post-save commit regression test verifying the callback receives `null`.
- No visual preview generated; behavior is not user-visible.

Validation:

- Desktop typecheck passed.
- Desktop suite: 486 passed, 25 skipped, 0 failed.
- `git diff --check` passed.
- Changes were not committed, as requested.

PR: #2120
Comment by: @integry (ID: 5546036208)
Model: gpt-5.6-sol
Implemented F5 only.

- Added a monotonic reconciliation generation in [ipc.ts](/tmp/git-processor/worktrees/integry/propr/pr-2120-followup-2026-09-04T20-34-37/apps/desktop/src/ipc.ts:85).
- Stale successful reads and stale failures can no longer overwrite the latest renderer policy.
- Added race tests covering both delayed resolution and rejection in [ipc-lifecycle.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2120-followup-2026-09-04T20-34-37/apps/desktop/src/ipc-lifecycle.test.ts:135).

Verification:

- IPC lifecycle tests: 17 passed
- Desktop TypeScript check: passed
- `git diff --check`: passed

No visual preview was created because this change is not user-visible. No commit was made.

PR: #2120
Comment by: @integry (ID: 5546142663)
Model: gpt-5.6-sol
…er-csp-rest-20260904-1923-yoz

[2119 by GPT-5.6 Sol] Desktop renderer CSP: restrict cleartext transport to loopback (retry)
@integry
integry merged commit e4264c2 into 1950-epic-cross-platform-dsk Sep 4, 2026
56 of 67 checks passed
@integry integry mentioned this pull request Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants